﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Persona.Cliente
{
    public partial class BuscarCliente : Form
    {
        private Dictionary<string, string> listBusquedaPor;
        private Entidades.Cliente result;

        public Entidades.Cliente Result
        {
            get
            {
                return result;
            }

            set
            {
                result = value;
            }
        }

        public BuscarCliente()
        {
            InitializeComponent();

            listBusquedaPor = new Dictionary<string, string>();
        }

        private void LoadListBuscarPor()
        {
            //Obtener lista de propiedades de un objeto
            //cmbBuscarPor.DataSource = (new Entidades.Cliente()).GetType().GetProperties().ToList();
            //cmbBuscarPor.DisplayMember = "Name";

            listBusquedaPor.Clear();
            listBusquedaPor.Add("razonSocial", "Razón social");
            listBusquedaPor.Add("clienteruc", "R.U.C.");

            cmbBuscarPor.DataSource = new BindingSource(listBusquedaPor, null);
            cmbBuscarPor.ValueMember = "Key";
            cmbBuscarPor.DisplayMember = "Value";
            cmbBuscarPor.SelectedIndex = -1;
        }

        private void BuscarCliente_Load(object sender, EventArgs e)
        {
            LoadListBuscarPor();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (cmbBuscarPor.SelectedIndex >= 0)
            {
                string argCliente = cmbBuscarPor.SelectedValue.ToString();
                LogicaNegocio.ClienteBLL clienteBLL = new LogicaNegocio.ClienteBLL();
                gridBusqueda.DataSource = clienteBLL.Buscar(argCliente, txtValor.Text);
            }
        }

        private void gridBusqueda_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridBusqueda.DataSource != null)
            {
                gridBusqueda.Columns["IdCliente"].Visible = false;
                gridBusqueda.Columns["IdCategoria"].Visible = false;
                gridBusqueda.Columns["IdDistrito"].Visible = false;
                gridBusqueda.Columns["IdSucursal"].Visible = false;
                gridBusqueda.Columns["IdVendedor"].Visible = false;
                gridBusqueda.Columns["IdSector"].Visible = false;
                gridBusqueda.Columns["CodigoCliente"].HeaderText = "Código";
                gridBusqueda.Columns["RazonSocial"].HeaderText = "Razón Social";
                gridBusqueda.Columns["RazonSocial"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader;
                gridBusqueda.Columns["Direccion"].Visible = false;
                gridBusqueda.Columns["Provincia"].Visible = false;
                gridBusqueda.Columns["Telefono"].Visible = false;
                gridBusqueda.Columns["Email"].Visible = false;
                gridBusqueda.Columns["RucCliente"].HeaderText = "R.U.C.";
                gridBusqueda.Columns["RucCliente"].DisplayIndex = 1;
                gridBusqueda.Columns["FechaRegistro"].Visible = false;
                gridBusqueda.Columns["UsuarioRegistro"].Visible = false;
                gridBusqueda.Columns["FechaModificacion"].Visible = false;
                gridBusqueda.Columns["UsuarioModificacion"].Visible = false;
                gridBusqueda.Columns["Activo"].Visible = false;                
            }
        }

        private void txtValor_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
            {
                btnBuscar_Click(sender, EventArgs.Empty);
            }
        }

        private void gridBusqueda_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (gridBusqueda.Rows.Count > 0)
            {
                result = gridBusqueda.SelectedRows[0].DataBoundItem as Entidades.Cliente;
                this.DialogResult = DialogResult.OK;                
            }
        }
    }
}
